package net.lab1024.sa.admin.module.business.traffic.aibi.domain.entity;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;

/**
 * Aibi 摄像机排队数据实体
 */
@Data
@TableName("t_aibi_car_queue")
public class AibiCarQueueEntity implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 去重用唯一标识（cameraCode + laneCode + sampleTimestamp）
     */
    private String messageId;

    /**
     * 道路编号
     */
    private String roadCode;

    /**
     * 摄像机编号
     */
    private String cameraCode;

    /**
     * 车道编码
     */
    private String laneCode;

    /**
     * 车道顺序（从 0 开始）
     */
    private Integer laneOrder;

    /**
     * 自定义车道类型（LEFT / STRAIGHT）
     */
    private String laneType;

    /**
     * 排队长度
     */
    private Integer queueLength;

    /**
     * 车道内车辆总数
     */
    private Integer vehicleCount;

    /**
     * 采集时间（精确到秒）
     */
    private LocalDateTime sampleTime;

    /**
     * 上报开始时间
     */
    private LocalDateTime startTime;

    /**
     * 上报结束时间
     */
    private LocalDateTime endTime;

    /**
     * 原始 JSON 片段
     */
    private String rawData;

    @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT)
    private LocalDateTime createTime;

    @TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

